package cn.tedu.springdemo.day05;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 *
 */
public class Tests {
    //传统的JDBC操作---UserDao
    @Test
    public void test01(){
        UserDao ud=new UserDao();
        ud.myInit();
        ud.addUser();ud.updateUser();
        ud.myDestroy();
    }
    //Spring容器---UserDao
    @Test
    public void test02(){
        //1.创建容器
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationcontext10.xml");
        //2.获取Bean
        UserDao ud=(UserDao)ac.getBean("ud");
        ud.addUser();
        ud.updateUser();
        //3.关闭容器
        ((ClassPathXmlApplicationContext)ac).close();
    }

    /**
     * SpringIOC创建
     * 添加属性---获取属性的初始值（对象--null int---0)
     * 发现的问题SpringIOC帮我们创建bean上面的属性并没有设置
     * 如果我们想创建bean时候给属性赋值咋办？
     * DI依赖注入：1.使用xml方式（繁琐，执行过程清晰）--先学入门
     *           2.使用注解方式（简洁，执行过程“乱”）--公司用
     */
    @Test
    public void test03(){
        //1.创建容器
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationcontext11.xml");
        //2.获取Bean
        Person p=(Person)ac.getBean("person");
        System.out.println(p.toString());
        //3.关闭容器
        ((ClassPathXmlApplicationContext)ac).close();
    }

    /**
     * DI依赖注入：属性存值
     * 第一步：创建IOC
     * 第二步:添加xml文件
     */
    @Test
    public void test04(){
        //1.创建容器
        ApplicationContext ac=new ClassPathXmlApplicationContext("applicationcontext12.xml");
        //2.获取Bean
        Demo d=(Demo)ac.getBean("demo");
        System.out.println(d);
        //3.关闭容器
        ((ClassPathXmlApplicationContext)ac).close();
    }
}
